"""
@version:python3
@author:大橘为重
@file:45-布局管理器的详细使用.py
@time:2022/4/14 19:18
"""
# 0、导入需要的包和模块
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("布局管理器的详细使用")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self): # 添加子控件以及子控件的配置操作
        label1 = QLabel("标签1")
        label1.setStyleSheet("background-color:green;")
        label2 = QLabel("标签2")
        label2.setStyleSheet("background-color:red;")
        label3 = QLabel("标签3")
        label3.setStyleSheet("background-color:blue;")
        # 1.创建一个布局管理器对象
        # layout = QBoxLayout(QBoxLayout.LeftToRight) # 这里可以不添加父对象，通过下面语句设置自动添加
        layout = QBoxLayout(QBoxLayout.BottomToTop) # 这里可以不添加父对象，通过下面语句设置自动添加
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(layout)
        # 3.把需要布局的子控件添加到布局管理器当中
        # layout.addWidget(label1,1)
        layout.addWidget(label1)
        # layout.addStretch(2)
        layout.addStretch() # 当括号内没有值的时候设置伸缩因子优先级最高（别的控件也没设置拉伸的情况下）
        # layout.addWidget(label2,2)
        layout.addWidget(label3)
        # layout.addWidget(label3,3)

        # 方法：
        # 设置空间之间的间距
        # layout.setSpacing(60)
        # 设置边缘空白
        # layout.setContentsMargins(左上右下)
        # 设置控件替换
        # layout.replaceWidget() # 注意，替换掉的控件不再被布局管理器管理，需要隐藏或者删除或者加入别的布局

        # 布局可以嵌套
        # layout.addLayout(子布局)

        # 插入控件
        # layout.insertWidget(索引，控件)
        # 同理也可插入布局
        # 手动添加空白
        # layout.addSpacing(100)
        # layout.insertSpacing(索引，距离)

# 1、创建一个应用程序对象
app = QApplication(sys.argv)

# 2、控件操作
# 创建控件、设置控件、事件和信号的处理
# 2.1 创建控件
window = Window()
# 2.2 设置控件


# 2.3 展示控件
window.show()

# 3、应用程序的执行，进入到消息循环
sys.exit(app.exec_())